--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / call / CallOverlay.vue
Displaying Raw • Download
meshchatx/src/frontend/components/call/CallOverlay.vue 077d56ffdfc1ca4dde68d854216dc2552cbc2424 (077d56ff) Text, 22.98 KB
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72|| Te6edf3initiationStatus Tff7b72|| Te6edf3isEnded Tff7b72|| Te6edf3wasDeclinedTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed bottom-4 right-4 z-[100] w-80 bg-white dark:bg-zinc-900 rounded-2xl shadow-2xl border border-gray-200 dark:border-zinc-800 overflow-hidden transition-all duration-300"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'ring-2 ring-red-500 ring-opacity-50'Tff7b72: Te6edf3isEnded Tff7b72|| Te6edf3wasDeclined Tb4b4b4}Ta5d6ff"
Tb4b4b4>
T8b949e<!-- Header -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-3 flex items-center bg-gray-50 dark:bg-zinc-800/50 border-b border-gray-100 dark:border-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 flex items-center space-x-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-2 rounded-full"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3isEnded Tff7b72|| Te6edf3wasDeclined Tff7b72? Ta5d6ff'bg-red-500' Tff7b72: Ta5d6ff'bg-green-500 animate-pulse'Ta5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-2 hover:opacity-70 transition-opacity group"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'call.go_to_phone_page'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3goToPhonePageTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-500 dark:text-zinc-400 uppercase tracking-wider group-hover:text-gray-700 dark:group-hover:text-zinc-200"
Tb4b4b4>
Tff7b72{{
Te6edf3wasDeclined
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"call.call_declined"Tb4b4b4)
Tff7b72: Te6edf3isEnded
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"call.call_ended"Tb4b4b4)
Tff7b72: Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3is_voicemail
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"call.recording_voicemail"Tb4b4b4)
Tff7b72: Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"call.active_call"Tb4b4b4)
Tff7b72: Te6edf3initiationStatus
Tff7b72? Te6edf3initiationStatus Tff7b72=== Ta5d6ff"Initiating..." Tff7b72||
Te6edf3initiationStatus Tff7b72=== Ta5d6ff"Resolving identity..." Tff7b72||
Te6edf3initiationStatus Tff7b72=== Ta5d6ff"Discovering path/identity..." Tff7b72||
Te6edf3initiationStatus Tff7b72=== Ta5d6ff"Requesting path..." Tff7b72||
Te6edf3initiationStatus Tff7b72=== Ta5d6ff"Dialing..." Tff7b72||
Te6edf3initiationStatus Tff7b72=== Ta5d6ff"Calling..." Tff7b72||
Te6edf3initiationStatus Tff7b72=== Ta5d6ff"Ringing..." Tff7b72||
Te6edf3initiationStatus Tff7b72=== Ta5d6ff"Establishing link..."
Tff7b72? Te6edf3initiationStatus
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"call.initiation"Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"call.call_status"Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"open-in-new"
Te6edf3classTff7b72=Ta5d6ff"size-3 text-gray-400 dark:text-zinc-500 group-hover:text-gray-600 dark:group-hover:text-zinc-300"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3is_recording Tff7b72&& Tff7b72!Te6edf3isEndedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1 ml-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"size-1.5 bg-red-500 rounded-full animate-pulse"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[8px] font-bold text-red-500 uppercase tracking-tighter"Tb4b4b4>RECTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isEndedTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1 hover:bg-gray-200 dark:hover:bg-zinc-700 rounded-lg transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isMinimized Tff7b72= Tff7b72!Te6edf3isMinimizedTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isMinimized Tff7b72? Ta5d6ff'chevron-up' Tff7b72: Ta5d6ff'chevron-down'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-4 text-gray-500"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-showTff7b72=Ta5d6ff"Tff7b72!Te6edf3isMinimizedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"p-4"Tb4b4b4>
T8b949e<!-- icon and name -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center mb-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"p-2 rounded-full mb-3"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3isEnded Tff7b72|| Te6edf3wasDeclined Tff7b72? Ta5d6ff'bg-red-100 dark:bg-red-900/30' Tff7b72: Ta5d6ff'bg-blue-100 dark:bg-blue-900/30'
Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72LxmfUserIcon
Tb4b4b4:Te6edf3custom-imageTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3custom_image Tff7b72: Tff7b72nullTa5d6ff"
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3icon_name Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4:Te6edf3icon-foreground-colourTff7b72=Ta5d6ff"
Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3foreground_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Tb4b4b4:Te6edf3icon-background-colourTff7b72=Ta5d6ff"
Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3background_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Te6edf3icon-classTff7b72=Ta5d6ff"size-14"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-center w-full min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-white truncate px-2"Tb4b4b4>
Tff7b72{{
Tb4b4b4(Te6edf3activeCall Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_identity_name Tff7b72: Te6edf3initiationTargetNameTb4b4b4) Tff7b72|| Te6edf3$tTb4b4b4(Ta5d6ff"call.unknown"Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3is_contact Tff7b72: Tff7b72!Tff7b72!Te6edf3initiationTargetNameTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-blue-600 dark:text-blue-400 font-medium mt-0.5"
Tb4b4b4>
In contacts
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-500 dark:text-zinc-500 font-mono truncate px-4"Tb4b4b4>
Tff7b72{{
Tb4b4b4(Te6edf3activeCall Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_identity_hash Tff7b72: Te6edf3initiationTargetHashTb4b4b4)
Tff7b72? Te6edf3formatDestinationHashTb4b4b4(
Te6edf3activeCall Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_identity_hash Tff7b72: Te6edf3initiationTargetHash
Tb4b4b4)
Tff7b72: Ta5d6ff""
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Status -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-center mb-6"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCallTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3isEnded Tff7b72|| Te6edf3wasDeclined
Tff7b72? Ta5d6ff'text-red-600 dark:text-red-400 animate-pulse'
Tff7b72: Te6edf3activeCallTb4b4b4.Te6edf3is_voicemail
Tff7b72? Ta5d6ff'text-red-600 dark:text-red-400 animate-pulse'
Tff7b72: Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6
Tff7b72? Ta5d6ff'text-green-600 dark:text-green-400'
Tff7b72: Ta5d6ff'text-gray-600 dark:text-zinc-400'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3wasDeclinedTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.call_declined"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3isEndedTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.call_ended"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTb4b4b4.Te6edf3is_voicemailTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"record" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.recording_voicemail"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3is_incoming Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4Ta5d6ff"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"call.incoming_call"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff0Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.busy"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff1Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.rejected"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff2Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.calling"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff3Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.available"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.ringing"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff5Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.establishing_link"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.connected"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3activeCallTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"call.status"Tb4b4b4) Tff7b72}}: Tff7b72{{ Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3initiationStatusTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium text-blue-600 dark:text-blue-400 animate-pulse"
Tb4b4b4>
Tff7b72{{ Te6edf3initiationStatus Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6 Tff7b72&& Tff7b72!Te6edf3isEnded Tff7b72&& Te6edf3elapsedTimeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-400 mt-1 font-mono"
Tb4b4b4>
Tff7b72{{ Te6edf3elapsedTime Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isEnded Tff7b72&& Te6edf3callDurationTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-400 mt-1 font-mono"Tb4b4b4>
Tff7b72{{ Te6edf3callDuration Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Stats (only when connected and not minimized) -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6 Tff7b72&& Tff7b72!Te6edf3isEndedTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mb-4 p-2 bg-gray-50 dark:bg-zinc-800/50 rounded-lg text-[10px] text-gray-500 dark:text-zinc-400 grid grid-cols-2 gap-1"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-up" Te6edf3classTff7b72=Ta5d6ff"size-3" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3activeCallTb4b4b4.Te6edf3tx_bytes Tff7b72|| T79c0ff0Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-down" Te6edf3classTff7b72=Ta5d6ff"size-3" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3activeCallTb4b4b4.Te6edf3rx_bytes Tff7b72|| T79c0ff0Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Controls -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isEnded Tff7b72&& Tff7b72!Te6edf3wasDeclinedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap justify-center gap-2 px-2"Tb4b4b4>
T8b949e<!-- Mute Mic -->
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3isMicMuted Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff'call.unmute_mic'Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff'call.mute_mic'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-2.5 rounded-full transition-all duration-200"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3isMicMuted
Tff7b72? Ta5d6ff'bg-red-500 text-white shadow-lg shadow-red-500/30'
Tff7b72: Ta5d6ff'bg-gray-100 dark:bg-zinc-800 text-gray-600 dark:text-zinc-300 hover:bg-gray-200 dark:hover:bg-zinc-700'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleMicrophoneTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isMicMuted Tff7b72? Ta5d6ff'microphone-off' Tff7b72: Ta5d6ff'microphone'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
T8b949e<!-- Mute Speaker -->
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3isSpeakerMuted Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff'call.unmute_speaker'Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff'call.mute_speaker'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-2.5 rounded-full transition-all duration-200"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3isSpeakerMuted
Tff7b72? Ta5d6ff'bg-red-500 text-white shadow-lg shadow-red-500/30'
Tff7b72: Ta5d6ff'bg-gray-100 dark:bg-zinc-800 text-gray-600 dark:text-zinc-300 hover:bg-gray-200 dark:hover:bg-zinc-700'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleSpeakerTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isSpeakerMuted Tff7b72? Ta5d6ff'volume-off' Tff7b72: Ta5d6ff'volume-high'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
T8b949e<!-- Hangup -->
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"
Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3is_incoming Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff'call.decline_call'Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff'call.hangup_call'Tb4b4b4)
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-2.5 rounded-full bg-red-600 text-white hover:bg-red-700 shadow-lg shadow-red-600/30 transition-all duration-200"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3hangupCallTb4b4b4(Tff7b72nullTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"phone-hangup" Te6edf3classTff7b72=Ta5d6ff"size-5 rotate-[135deg]" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
T8b949e<!-- Send to Voicemail (if incoming) -->
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3is_incoming Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'call.send_to_voicemail'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-2.5 rounded-full bg-blue-600 text-white hover:bg-blue-700 shadow-lg shadow-blue-600/30 transition-all duration-200"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3sendToVoicemailTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"voicemail" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
T8b949e<!-- Answer (if incoming) -->
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3is_incoming Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff4Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'call.answer_call'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-2.5 rounded-full bg-green-600 text-white hover:bg-green-700 shadow-lg shadow-green-600/30"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3answerCallTb4b4b4(Tff7b72nullTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"phone" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Ended State Voicemail Playback -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isEnded Tff7b72&& Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3is_voicemail Tff7b72&& Te6edf3voicemailStatus Tff7b72&& Te6edf3voicemailStatusTb4b4b4.Te6edf3latest_idTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-4 pb-4"
Tb4b4b4>
Tb4b4b4<Tff7b72AudioWaveformPlayer Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Ta5d6ff`Ta5d6ff/api/v1/telephone/voicemails/Tffd700${Te6edf3voicemailStatusTb4b4b4.Te6edf3latest_idTffd700}Ta5d6ff/audioTa5d6ff`Ta5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Minimized State -->
Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3isMinimized Tff7b72&& Tff7b72!Te6edf3isEndedTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 flex items-center justify-between bg-white dark:bg-zinc-900"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-2 overflow-hidden mr-2 min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72LxmfUserIcon
Tb4b4b4:Te6edf3custom-imageTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3custom_image Tff7b72: Tff7b72nullTa5d6ff"
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3icon_name Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4:Te6edf3icon-foreground-colourTff7b72=Ta5d6ff"
Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3foreground_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Tb4b4b4:Te6edf3icon-background-colourTff7b72=Ta5d6ff"
Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3background_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Te6edf3icon-classTff7b72=Ta5d6ff"size-6 shrink-0"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium text-gray-700 dark:text-zinc-200 truncate block"Tb4b4b4>
Tff7b72{{
Tb4b4b4(Te6edf3activeCall Tff7b72? Te6edf3activeCallTb4b4b4.Te6edf3remote_identity_name Tff7b72: Te6edf3initiationTargetNameTb4b4b4) Tff7b72|| Te6edf3$tTb4b4b4(Ta5d6ff"call.unknown"Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3activeCall Tff7b72&& Te6edf3activeCallTb4b4b4.Te6edf3status Tff7b72=== T79c0ff6 Tff7b72&& Te6edf3elapsedTimeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-500 dark:text-zinc-400 font-mono"
Tb4b4b4>
Tff7b72{{ Te6edf3elapsedTime Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-1"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 hover:bg-gray-100 dark:hover:bg-zinc-800 rounded transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleMicrophoneTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isMicMuted Tff7b72? Ta5d6ff'microphone-off' Tff7b72: Ta5d6ff'microphone'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-4"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3isMicMuted Tff7b72? Ta5d6ff'text-red-500' Tff7b72: Ta5d6ff'text-gray-400'Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 hover:bg-red-100 dark:hover:bg-red-900/30 rounded transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3hangupCallTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"phone-hangup" Te6edf3classTff7b72=Ta5d6ff"size-4 text-red-500 rotate-[135deg]" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3LxmfUserIcon Tff7b72from Ta5d6ff"../LxmfUserIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3AudioWaveformPlayer Tff7b72from Ta5d6ff"../messages/AudioWaveformPlayer.vue"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"CallOverlay"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{ Te6edf3MaterialDesignIconTb4b4b4, Te6edf3LxmfUserIconTb4b4b4, Te6edf3AudioWaveformPlayer Tb4b4b4}Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4{
Te6edf3activeCallTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3isEndedTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657BooleanTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3wasDeclinedTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657BooleanTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3voicemailStatusTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3initiationStatusTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657StringTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3initiationTargetHashTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657StringTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3initiationTargetNameTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657StringTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3emitsTff7b72: Tb4b4b4[Ta5d6ff"hangup"Tb4b4b4, Ta5d6ff"toggle-mic"Tb4b4b4, Ta5d6ff"toggle-speaker"Tb4b4b4]Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3isMinimizedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isMicMutingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isSpeakerMutingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3elapsedTimeIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isPlayingVoicemailTff7b72: Tff7b72falseTb4b4b4,
Te6edf3audioPlayerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3localMicMutedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3localSpeakerMutedTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3isMicMutedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3localMicMutedTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isSpeakerMutedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3localSpeakerMutedTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3elapsedTimeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3activeCallTff7b72?Tb4b4b4.Te6edf3call_start_timeTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3elapsed Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000 Tff7b72- Tff7b72thisTb4b4b4.Te6edf3activeCallTb4b4b4.Te6edf3call_start_timeTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(Te6edf3elapsedTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3callDurationTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isEnded Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3activeCallTff7b72?Tb4b4b4.Te6edf3call_start_timeTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3duration Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000 Tff7b72- Tff7b72thisTb4b4b4.Te6edf3activeCallTb4b4b4.Te6edf3call_start_timeTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(Te6edf3durationTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3activeCallTb4b4b4(Te6edf3newCallTb4b4b4, Te6edf3oldCallTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3newCallTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3oldCall Tff7b72|| Te6edf3newCallTb4b4b4.Te6edf3hash Tff7b72!== Te6edf3oldCallTb4b4b4.Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3localMicMuted Tff7b72= Te6edf3newCallTb4b4b4.Te6edf3is_mic_mutedTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3localSpeakerMuted Tff7b72= Te6edf3newCallTb4b4b4.Te6edf3is_speaker_mutedTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3elapsedTimeInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$forceUpdateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff1000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3elapsedTimeIntervalTb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3elapsedTimeIntervalTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3goToPhonePageTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"call"Tb4b4b4, Te6edf3queryTff7b72: Tb4b4b4{ Te6edf3tabTff7b72: Ta5d6ff"phone" Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatBytesTb4b4b4(Te6edf3bytesTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3bytes Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3answerCallTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/answer"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"call.failed_to_answer_call"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3hangupCallTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"hangup"Tb4b4b4)Tb4b4b4;
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/hangup"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"call.failed_to_hangup_call"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3sendToVoicemailTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/send-to-voicemail"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"call.call_sent_to_voicemail"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"call.failed_to_send_to_voicemail"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3toggleMicrophoneTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3isCurrentlyMuted Tff7b72= Tff7b72thisTb4b4b4.Te6edf3localMicMutedTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isMicMuting Tff7b72= Tff7b72trueTb4b4b4;
T8b949e// Optimistic update
Tff7b72thisTb4b4b4.Te6edf3localMicMuted Tff7b72= Tff7b72!Te6edf3isCurrentlyMutedTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"toggle-mic"Tb4b4b4, Tff7b72!Te6edf3isCurrentlyMutedTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3endpoint Tff7b72= Te6edf3isCurrentlyMuted
Tff7b72? Ta5d6ff"/api/v1/telephone/unmute-transmit"
Tff7b72: Ta5d6ff"/api/v1/telephone/mute-transmit"Tb4b4b4;
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Te6edf3endpointTb4b4b4)Tb4b4b4;
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isMicMuting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isMicMuting Tff7b72= Tff7b72falseTb4b4b4;
T8b949e// Revert on error
Tff7b72thisTb4b4b4.Te6edf3localMicMuted Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3localMicMutedTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"call.failed_to_toggle_microphone"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3toggleSpeakerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3isCurrentlyMuted Tff7b72= Tff7b72thisTb4b4b4.Te6edf3localSpeakerMutedTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isSpeakerMuting Tff7b72= Tff7b72trueTb4b4b4;
T8b949e// Optimistic update
Tff7b72thisTb4b4b4.Te6edf3localSpeakerMuted Tff7b72= Tff7b72!Te6edf3isCurrentlyMutedTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"toggle-speaker"Tb4b4b4, Tff7b72!Te6edf3isCurrentlyMutedTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3endpoint Tff7b72= Te6edf3isCurrentlyMuted
Tff7b72? Ta5d6ff"/api/v1/telephone/unmute-receive"
Tff7b72: Ta5d6ff"/api/v1/telephone/mute-receive"Tb4b4b4;
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Te6edf3endpointTb4b4b4)Tb4b4b4;
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSpeakerMuting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSpeakerMuting Tff7b72= Tff7b72falseTb4b4b4;
T8b949e// Revert on error
Tff7b72thisTb4b4b4.Te6edf3localSpeakerMuted Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3localSpeakerMutedTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"call.failed_to_toggle_speaker"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3playLatestVoicemailTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isPlayingVoicemailTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3audioPlayerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3audioPlayerTb4b4b4.Te6edf3pauseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isPlayingVoicemail Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3voicemailId Tff7b72= Tff7b72thisTb4b4b4.Te6edf3voicemailStatusTff7b72?Tb4b4b4.Te6edf3latest_idTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3voicemailIdTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isPlayingVoicemail Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioPlayer Tff7b72= Tff7b72new Te6edf3AudioTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/voicemails/Tffd700${Te6edf3voicemailIdTffd700}Ta5d6ff/audioTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioPlayerTb4b4b4.Te6edf3onended Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isPlayingVoicemail Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioPlayer Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3audioPlayerTb4b4b4.Te6edf3playTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to play voicemail:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isPlayingVoicemail Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────